home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / pvm34b3.zip / pvm34b3 / pvm3 / src / waitc.h < prev   
C/C++ Source or Header  |  1997-07-22  |  5KB  |  147 lines

  1.  
  2. /* $Id: waitc.h,v 1.7 1997/06/25 22:11:15 pvmsrc Exp $ */
  3.  
  4. /*
  5.  *         PVM version 3.4:  Parallel Virtual Machine System
  6.  *               University of Tennessee, Knoxville TN.
  7.  *           Oak Ridge National Laboratory, Oak Ridge TN.
  8.  *                   Emory University, Atlanta GA.
  9.  *      Authors:  J. J. Dongarra, G. E. Fagg, M. Fischer
  10.  *          G. A. Geist, J. A. Kohl, R. J. Manchek, P. Mucci,
  11.  *         P. M. Papadopoulos, S. L. Scott, and V. S. Sunderam
  12.  *                   (C) 1997 All Rights Reserved
  13.  *
  14.  *                              NOTICE
  15.  *
  16.  * Permission to use, copy, modify, and distribute this software and
  17.  * its documentation for any purpose and without fee is hereby granted
  18.  * provided that the above copyright notice appear in all copies and
  19.  * that both the copyright notice and this permission notice appear in
  20.  * supporting documentation.
  21.  *
  22.  * Neither the Institutions (Emory University, Oak Ridge National
  23.  * Laboratory, and University of Tennessee) nor the Authors make any
  24.  * representations about the suitability of this software for any
  25.  * purpose.  This software is provided ``as is'' without express or
  26.  * implied warranty.
  27.  *
  28.  * PVM version 3 was funded in part by the U.S. Department of Energy,
  29.  * the National Science Foundation and the State of Tennessee.
  30.  */
  31.  
  32. /*
  33.  *    waitc.h
  34.  *
  35.  *    Wait context descriptors.
  36.  *
  37. $Log: waitc.h,v $
  38.  * Revision 1.7  1997/06/25  22:11:15  pvmsrc
  39.  * Markus adds his frigging name to the author list of
  40.  *     every file he ever looked at...
  41.  *
  42.  * Revision 1.6  1997/06/16  13:39:11  pvmsrc
  43.  * Updated struct waitc_spawn to include additional start info required
  44.  *     by the GRM.
  45.  *
  46.  * Revision 1.5  1997/04/10  17:51:39  pvmsrc
  47.  * Added new wait context constant WT_RECVINFO.
  48.  *     - for blocking calls to pvm_recvinfo().
  49.  *
  50.  * Revision 1.4  1997/04/08  17:27:26  pvmsrc
  51.  * Added WT_RESET constant.
  52.  *
  53.  * Revision 1.3  1997/03/06  21:14:24  pvmsrc
  54.  *     take out names in prototype.
  55.  *
  56.  * Revision 1.2  1997/01/28  19:28:37  pvmsrc
  57.  * New Copyright Notice & Authors.
  58.  *
  59.  * Revision 1.1  1996/09/23  23:43:40  pvmsrc
  60.  * Initial revision
  61.  *
  62.  * Revision 1.2  1994/06/03  20:38:33  manchek
  63.  * version 3.3.0
  64.  *
  65.  * Revision 1.1  1993/08/30  23:26:52  manchek
  66.  * Initial revision
  67.  *
  68.  */
  69.  
  70.  
  71. /* Wait context info */
  72.  
  73. struct waitc {
  74.     struct waitc *wa_link;        /* list of all, ordered by wid */
  75.     struct waitc *wa_rlink;
  76.     int wa_wid;                    /* unique identifier, >0 */
  77.     int wa_kind;                /* why waiting */
  78.     int wa_on;                    /* entity waiting on */
  79.     int wa_tid;                    /* entity waiting */
  80.     int wa_dep;                    /* remote wait id that depends on us or 0 */
  81.     struct waitc *wa_peer;        /* dll of peers, not sorted */
  82.     struct waitc *wa_rpeer;
  83. /* wait kind-specific stuff below */
  84.     struct pmsg *wa_mesg;        /* message to be sent on completion */
  85.     int wa_count;                /* number of times to trigger */
  86.     void *wa_spec;                /* for kind-specific data */
  87. };
  88.  
  89. /* Wait kinds */
  90.  
  91. #define    WT_ADDHOST        1    /* hosts being added for us */
  92. #define    WT_SPAWN        2    /* tasks being spawned for us */
  93. #define    WT_HOSTSTART    3    /* hoster starting slaves for us */
  94. #define    WT_TASK            4    /* getting task list from other pvmds */
  95. #define    WT_DELHOST        5    /* hosts being deleted for us */
  96. #define    WT_HTUPD        6    /* host table update waiting to commit */
  97. #define    WT_PSTAT        7    /* query status of task */
  98. #define    WT_TASKX        8    /* waiting for task to exit */
  99. #define    WT_MSTAT        9    /* query status of host */
  100. #define    WT_DB            10    /* name-server query */
  101. #define    WT_HOSTF        11    /* waiting for host to fail */
  102. #define    WT_HOSTA        12    /* waiting for hosts to be added */
  103. #define    WT_HOSTSYNC        13    /* get remote time of day clock */
  104. #define    WT_TASKSTART    14    /* tasker starting task */
  105. #define    WT_ROUTEA        15    /* notify if route created */
  106. #define    WT_ROUTED        16    /* notify if route deleted */
  107. #define    WT_RESET        17    /* waiting for reset task to exit */
  108. #define    WT_RECVINFO        18    /* waiting for mbox entry put */
  109.  
  110. void wait_init __ProtoGlarp__(( int base, int range ));
  111. struct waitc *wait_new __ProtoGlarp__(( int kind ));
  112. struct waitc *wait_find __ProtoGlarp__(( int wid ));
  113. void wait_delete __ProtoGlarp__(( struct waitc *wp ));
  114. void wait_dump __ProtoGlarp__(( struct waitc *wp ));
  115. void wait_dumpall __ProtoGlarp__(( void ));
  116. struct waitc *wait_get __ProtoGlarp__(( struct hostd *, struct pmsg *, int ));
  117.  
  118. struct waitc_spawn {
  119.     char *w_file;                /* executable name */
  120.     int w_flags;                /* spawn flags */
  121.     int w_argc;                    /* length of argv */
  122.     char **w_argv;                /* arg list */
  123.     struct htab *w_ht;            /* set of usable hosts */
  124.     int *w_vec;                    /* result/status vector */
  125.     int w_veclen;                /* length of wa_tids */
  126.     int w_togo;                    /* num of unresolved in vec */
  127.     int w_outtid;                /* stdout dst */
  128.     int w_outctx;
  129.     int w_outtag;
  130.     int w_trctid;                /* trace dst */
  131.     int w_trcctx;
  132.     int w_trctag;
  133.     int w_nenv;                    /* length of env */
  134.     char **w_env;                /* envar list */
  135.     int w_ptid;                    /* parent task id */
  136.     int w_sched;                /* task's scheduler */
  137.     int w_instance;                /* we are the n'th task */
  138.     int w_hosttotal;            /* how many on this host alone */
  139.     int w_outof;                /* total to spawn */
  140. };
  141.  
  142. struct waitc_add {
  143.     int w_num;                /* number of hosts */
  144.     struct hostd **w_hosts;    /* vector of host entries */
  145. };
  146.  
  147.